/*
 * Copyright (c) 2006, 2022, webrx.cn All rights reserved.
 *
 */
package cn.webrx.gen;

import java.util.stream.IntStream;

/**
 * <p>Project: jse2204 - Demo
 * <p>Powered by webrx On 2022-09-20 14:23:30
 *
 * @author webrx [webrx@126.com]
 * @version 1.0
 * @since 17
 */
public class Demo {
    public static void main(String[] args) {
        Demo d = new Demo();
        MyGen<String> mg1 = new MyGen<>();
        d.m1(mg1);
        d.m2(mg1);

        //d.m3(mg1);

        //错误
        MyGen<Integer> mg2 = new MyGen<>();
        //d.m1(mg2);
        d.m2(mg2);

        d.m3(mg2);
        d.m4(mg2);

        MyGen<Double> mg3 = new MyGen<>();
        d.m3(mg3);

        //d.m4(mg3);


        MyGen<Number> mg4 = new MyGen<>();
        d.m3(mg4);
        d.m4(mg4);


    }

    public void m1(MyGen<String> mg){

    }


    /**
     * Description: ? 类型没有限制，在调用方法时，指定相关的类型
     * @date: 2022/9/20 14:39
     * @params: [cn.webrx.gen.MyGen<?>]
     * @return: void
     */
    public void m2(MyGen<?> mg){

    }

    /**
     * Description: 上限 Number类及其子类
     * @date: 2022/9/20 14:37
     * @params: [cn.webrx.gen.MyGen<? extends java.lang.Number>]
     * @return: void
     */
    public void m3(MyGen<? extends Number> mg){

    }

    /**
     * Description: super 下限 本类及其父类  Integer Number
     * @date: 2022/9/20 14:34
     * @params: [cn.webrx.gen.MyGen<? super java.lang.Integer>]
     * @return: void
     */
    public void m4(MyGen<? super Integer> mg){

    }

}



class MyGen<T>{

}
